package net.wofly.right.domain;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wofly.right.dto.MenuDto;

/**
 * 用户表
 * @author lign
 * @version 1.0
 * @updated 05-十二月-2017 19:58:48
 */
@Data
@Entity
@Table(name = "sale_right_user")
public class User {

	/**
	 * 用户ID
	 */
	@Id
	private String userID;
	/**
	 * 用户名
	 */
	@ApiModelProperty(value = "用户名", required = false)
	private String userName;
	/**
	 * 密码
	 */
	@ApiModelProperty(value = "密码", required = true)
	private String password;
	/**
	 * 手机号    长度：20 
	 */
	@ApiModelProperty(value = "手机号", required = true)
	private String mobile;
	/**
	 * 邮箱   长度：50
	 */
	@ApiModelProperty(value = "邮箱", required = false)
	private String email;
	/**
	 * 姓名/备注名   长度：50	昵称
	 */
	@ApiModelProperty(value = "昵称", required = false)
	private String name;
	
	/**
	 * 姓名/备注名   长度：50
	 */
	@ApiModelProperty(value = "昵称拼音首字母", required = false)
	private String namePinYin;
	/**
	 * 性别
	 */
	@ApiModelProperty(value = "性别", required = false)
	private Integer sex;
	/**
	 * 出生年月
	 */
	@ApiModelProperty(value = "出生年月", required = false)
	private Long birthday;
	/**
	 * 客户类型
	 * <ul>
	 * 	<li>对应于渠道。</li>
	 * 	<li>来源于Channel</li>
	 * </ul>
	 */

	/**
	 * 用户注册途径
	 * <ol>
	 * 	<li>通过手机号、邮箱、qq、微信等途径注册</li>
	 * 	<li>默认为手机号</li>
	 * 	<li></li>
	 * </ol>
	 */
	@ApiModelProperty(value = "注册途径", required = true)
	private Integer RegisterWay;
	/**
	 * 头像
	 * 
	 * 长度：200
	 */
	@ApiModelProperty(value = "头像", required = false)
	private String pic1;
	/**
	 * 头像
	 * 
	 * 
	 * 长度：200
	 */
	@ApiModelProperty(value = "头像", required = false)
	private String pic2;
	/**
	 * 用户状态
	 */
	@ApiModelProperty(value = "用户状态", required = true)
	private Integer status = 1;
	/**
	 * 注册时间
	 * <ul>
	 * 	<li>验证通过后，写入用户信息时的时间</li>
	 * </ul>
	 */
	@ApiModelProperty(value = "注册时间", required = false)
	private Long registerTime;
	/**
	 * 注册类型
	 * <ol>
	 * 	<li>用户是自助注册还是代注册</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "注册类型", required = true)
	private Integer registerType;
	/**
	 * 代理注册用户ID
	 * <ol>
	 * 	<li>代注册的用户，代理注册的用户ID</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "代理注册人的用户ID", required = false)
	private String agencyUserID;
	private Long modifyDate;
	/**
	 * 客户跟踪员工ID
	 * <ol>
	 * 	<li>如果是客户，此客户的负责跟踪的销售用户ID</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "客户用户的销售跟踪的UserID", required = false)
	private String followUserID;
	/**
	 * 组织机构ID
	 * <ol>
	 * 	<li>用户所在组织机构ID</li>
	 * 	<li>客户也在相应的组织机构中</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "组织机构", required = true)
	private String organizationID;
	/**
	 * 是否有仓库标志
	 * 1:有；0:没有
	 */
	@ApiModelProperty(value = "用户是否有仓库的标识", required = false)
	private Integer warehouseFlag = 0;
	/**
	 * 仓库类型
	 * <ol>
	 * 	<li>公司总仓库=1 ； 部门仓库=2 ；个人仓库=3</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "用户的仓库类型", required = false)
	private Integer warehouseType;
	/**
	 * 仓库ID
	 */
	@ApiModelProperty(value = "用户的仓库ID", required = false)
	private String warehouseID;
	
	/**
	 * 是否是法人用户
	 * 1 为是 0 为否
	 * 法人用户ID与所在企业组织机构ID相同
	 * 
	 */
	@ApiModelProperty(value = "是否是法人用户", required = true)
	private Integer isLegal = 0 ;
	
	/**
	 * 用户类型
	 * 0 为内部员工 1为个人用户 2 为企业用户
	 * 法人用户ID与所在企业组织机构ID相同
	 * 
	 */
	@ApiModelProperty(value = "用户类型", required = true)
	private Integer userType = 1 ;
	
	
	/**
	 * 客户类型
	 * 1为个人客户
	 * 2为单位客户
	 * 
	 */
	@ApiModelProperty(value = "客户类型", required = true)
	private Integer customType = 1 ;
	
	@ApiModelProperty(value = "操作用户", required = true)
	private String optUser ;
	
	@Transient
	private String roleID;
	
	@ApiModelProperty(value = "送货地址", required = true)
	@Transient
	private String addr;
	
	/**
	 * 企业客户对应的组织机构信息
	 */
	@Transient
	private Organization organization ;

	@Transient
	private Role role;
	
	@Transient
	private List<MenuDto> menus ;

	/**
	 * 是否有仓库标志
	 * 1:有；0:没有
	 */
	@ApiModelProperty(value = "用户是否有仓库的标识", required = false)
	@Transient
	private String warehouseFlagStr;
	/**
	 * 仓库类型
	 * <ol>
	 * 	<li>公司总仓库=1 ； 部门仓库=2 ；个人仓库=3</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "用户的仓库类型", required = false)
	@Transient
	private String warehouseTypeStr;

	/**
	 * 组织机构名称
	 * <ol>
	 * 	<li>用户所在组织机构ID</li>
	 * 	<li>客户也在相应的组织机构中</li>
	 * </ol>
	 */
	@ApiModelProperty(value = "组织机构名称", required = false)
	@Transient
	private String organizationName;
	
	public User(){

	}
	@Override
	public void finalize() throws Throwable {

	}
}